Julia 数
阐述
Number
抽象类型及其子类型。
zero()
和 one()
返回对应类型的零和一。
实数
整数
Integer <: Real
抽象类型及其子类型。Integer
具有两个抽象子类型 Signed
和 Unsigned
,分别用于定义有符号和无符号类型。
Signed
的子类型:Int8, 16, 32, 64, 128
Unsigned
的子类型:Bool
,UInt8, 16, 32, 64, 128
- 别名
Int/UInt
作为操作系统所指定的原生整数类型
整数运算上溢后会发生取模操作
有理数
有理数类型由 Rational{T<:Integer} <: Real
参数类型定义,参数为整数类型并且属于 Real 的子类型。
有理数创建时会自动约分,并且使得分母非负。
有理数可以转换为浮点数,并且保持下式成立:float(a//b) == a/b
。
浮点数
浮点数类型由 AbstractFloat
抽象类型及其子类型定义。
- 基本类型:
Float16, Float32, Float64
BigFloat
复数
复数类型由 Complex{T<:Real} <: Number
Julia 参数类型定义。可以用 complex(a, b)
的形式构造。
实例
字面量
整数
- 无前缀字面量为有符号整数,类型为
Int32
或Int64
,- 64 位操作系统上永远是
Int64
- 32 位操作系统上按实际大小选择
- 64 位操作系统上永远是
- 用
0x, 0o, 0b
开头的字面量为无符号整数,类型取决于将该字面量的第一位换成 1 的大小所需要的存储空间- 如
0x01
是一个UInt8
,而0x0001
是一个UInt16
- 如
- 带负号的无符号整数视为二进制补码
有理数
Rational{Int}
字面量可以用形如 2//3
的表达式表示。
im
表示虚数单位- 可以用
1 + 2im
的形式表示字面量
浮点数
- 带小数点的数定义
Float64
- 科学计数法(e 或 E)定义
Float64
- 科学计数法(f)定义
Float32
- 以 2 为底的十六进制科学计数法(p)定义
Float64
,如0x1.8p3
- 下划线可以用于分隔数字
特殊浮点数值:
- 各类型的正 0 和负 0:相等但
bitstring
表示不同 - 各类型的
Inf/Inf16/Inf32
:大于所有的有限浮点数-Inf/-Inf16/-Inf32
:小于所有的有限浮点数NaN/NaN16/NaN32
:不等于所有浮点数,包括它自身
- 机器 epsilon:
eps(T)
给出类型T
中 1 和下一个浮点数的距离,而eps(x)
给出x
和下一个浮点数的距离
性质
转换
指在两种 <:Number
的类型之间进行转换。有三种方式:
- 用 Julia 构造函数
T(x)
或 Julia 转换convert(T, x)
- 对浮点数可能用正负无穷表示
- 对整数如果表示不了则抛出错误
- 当目标类型是整数时,用
x % T
- 若
T
是一个 位整数类型,转换为模 同余的值
- 若
- 当目标类型是整数时,用
round(T, x)
Int8(127)
Int8(128) # error
Int8(3.14) # error
128 % Int8 # -128
round(Int8, 127.6) # error
相关内容
参考文献
- 有些函数输入实数时返回实数,输入复数时返回复数,如
sqrt
;